package com.ssm.service.implement;

import com.ssm.dao.UserMapper;
import com.ssm.pojo.User;
import com.ssm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.HashMap;
import java.util.Map;

/**
 * @program: exercise1_online_shopping
 * @author: qin haojun
 * @create: 2021-02-14 16:49
 */
public class UserServiceImpl implements UserService {

    @Autowired
    UserMapper userMapper;

    /**
     * 添加注册用户，用户信息包装在pojo中。
     * 注册用户不成功无非两个可能：1、密码重叠。2、用户名重叠。
     * 因此返回一个整数，1表示成功，-1表示密码重叠，0表示用户名重叠
     * @param user
     * @return
     * @throws Exception
     */
    @Override
    public int addUser(User user) throws Exception {
        if(userMapper.selectUserByName(user.getUname())!=null)
            return 0;
        if(userMapper.selectUserByPwd(user.getPassword())!=null)
            return -1;

        userMapper.insertUser(user);
        return 1;
    }



    /**
     * 用户登录
     * @param username 用户名
     * @param password 密码
     * @return 可以登录返回true，不可以返回false
     * @throws Exception
     */
    @Override
    public boolean login(String username, String password) throws Exception {
        User user1=userMapper.selectUserByPwd(password);
        if(user1==null)
            return false;

        User user2=userMapper.selectUserByName(username);
        if(user2==null)
            return false;

        return user1.getUid()==user2.getUid();
    }



    /**
     * 通过id更新用户信息，所以需要有id信息
     * @param userId 用户id
     * @param user 要更新的信息保存在pojo中
     * @throws Exception
     */
    @Override
    public void updateUserById(Integer userId, User user) throws Exception {
        user.setUid(userId);
        userMapper.updateUserById(user);
    }

    @Override
    public User getUserByPwd(String password) throws Exception {
        return userMapper.selectUserByPwd(password);
    }

    @Override
    public User getUserByName(String userName) throws Exception {
        return userMapper.selectUserByName(userName);
    }

    /**
     * 通过uid更改用户名
     * @param oldUid
     * @param newUid
     * @param user
     * @throws Exception
     */
    @Override
    public void updateId(Integer oldUid, Integer newUid, User user) throws Exception {
        Map<String,Object> para=new HashMap<>();
        para.put("old_uid",oldUid);
        para.put("new_uid",newUid);
        userMapper.updateId(para);

        System.err.println("由于用户修改昵称，在shoppingcart中更改了"+para.get("row")+"条记录");
    }

    @Override
    public User getUserById(Integer userId) throws Exception {
        return userMapper.selectUserById(userId);
    }
}
